package com.common.protobuf;

import com.google.protobuf.ByteString;
import com.google.protobuf.GeneratedMessageV3;

/**
 * 创建请求 和 回送响应的一个数据封装
 *
 * @author 顾志杰
 * @date 2021/3/16-14:53
 */
public class MessageBuilder {

    private static final int CRCCODE = 0xabef0101;

    /**
     * 响应封装
     * @param module
     * @param cmd
     * @param resultType
     * @param data
     * @return
     */
    public static MessageModule.Message getResponseMessage(String module,
                                                           String cmd,
                                                           MessageModule.ResultType resultType,
                                                           GeneratedMessageV3 data) {
        return MessageModule.Message.newBuilder()
                .setCrcCode(CRCCODE)
                .setMessageType(MessageModule.MessageType.RESPONSE)
                .setModule(module)
                .setCmd(cmd)
                .setResultType(resultType)
                .setBody(ByteString.copyFrom(data.toByteArray()))
                .build();
    }


    /**
     * 请求封装
     * @param module
     * @param cmd
     * @param data
     * @return
     */
    public static MessageModule.Message getRequestMessage(String module,
                                                           String cmd,
                                                           GeneratedMessageV3 data) {
        return MessageModule.Message.newBuilder()
                .setCrcCode(CRCCODE)
                .setMessageType(MessageModule.MessageType.REQUEST)
                .setModule(module)
                .setCmd(cmd)
                .setBody(ByteString.copyFrom(data.toByteArray()))
                .build();
    }
}
